library(tidyverse)
# Load the necessary libraries
library(rnaturalearth)
library(rnaturalearthdata)
library(ggplot2)
library(dplyr)
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 4.3.3
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3

Exercise 1

Insert any text here.

# Insert code for Exercise 1 here
#| crop = true

# Get the world map data
world_map <- ne_countries(scale = "medium", returnclass = "sf") |>
  filter(name != "Antarctica")
renewable_grow <- read.csv("annual-percentage-change-renewables.csv") |>
  filter(Code != "NA") 

renewable_grow$Renewables....growth. <- round(renewable_grow$Renewables....growth.,2)

renewable_plot <- function(region, year) {
renewable_grow22 <- renewable_grow |>
  filter(Year == year)

renewable_grow_map22 <- left_join(world_map,renewable_grow22,
                                
                                c( "iso_a3_eh"= "Code")) |>
rename( "growth" = "Renewables....growth.")

if (region == "World") {
  
} else if (region == "North America" | region == "Latin America & Caribbean") {
  renewable_grow_map22 <- filter(renewable_grow_map22, region_wb == region)
}
  else {renewable_grow_map22 <- filter(renewable_grow_map22, region_un == region )}

renewable_grow_map22 |>
  mutate(text = paste("<b>",admin,"<b>\n growth rate:",signif(growth,2)))

 p <- ggplot(data = renewable_grow_map22) +
 geom_sf( aes( fill = growth + runif(nrow(renewable_grow_map22),min = 0, max = 0.001), text = paste("<b>",admin,"<b>\n growth rate:",signif(growth,2))), color = "black")+
  #scale_fill_manual("", values = my_colors)+
 labs(
   title = paste("Annual percentage change in renewable energy generation in", year),
   fill = "Growth %") +
  scale_fill_continuous(low = "red", high = "blue", limits = c(-20, 20), guide = guide_colorbar(direction = "horizontal", ticks = TRUE, nbin = 50, barwidth = 10, barheight = 1, label.position = "bottom", title.position = "top", title.hjust = 0.5)) +
 theme_map() 
#scale_fill_continuous(low = "red", mid = "white", high = "blue", labels = scales::percent)

 ggplotly(p, tooltip = "text") |>
   style(hoveron = "fills")

}

renewable_plot("World", 2022)
## Warning in layer_sf(geom = GeomSf, data = data, mapping = mapping, stat = stat,
## : Ignoring unknown aesthetics: text

Exercise 2

energy_gen <- read.csv("modern-renewable-prod.csv") 

egen_plot <- function(region) {
  energy_gen_spec_line <- energy_gen |>
    filter(Entity == region) |>
    rename( "Wind"="Electricity.from.wind...TWh" ,"Hydro" = "Electricity.from.hydro...TWh", "Solar" = "Electricity.from.solar...TWh","Other"  = "Other.renewables.including.bioenergy...TWh")
  energy_gen_spec_point <- energy_gen_spec_line |>
    pivot_longer(cols = -c(Entity, Code, Year), names_to = "sources",
                 values_to = "Energy" )
  
  p <- ggplot()  +
    geom_line(data = energy_gen_spec_line,aes(x = Year, y = Wind), color = "purple") + 
    geom_line(data = energy_gen_spec_line,aes(x = Year, y = Hydro), color = "pink") +
    geom_line(data = energy_gen_spec_line,aes(x = Year, y = Solar), color = "green") +
    geom_line(data = energy_gen_spec_line,aes(x = Year, y = Other), color = "orange") +
    geom_point(data = energy_gen_spec_point, aes(x = Year, y = Energy, color = sources), size = 2)
  
  ggplotly(p, tooltip = c("Energy","Year"))
    
  
}

egen_plot("North America")

LS0tDQp0aXRsZTogIkZpbmFsIFByb2plY3QiDQphdXRob3I6ICJEYW5ueSBQaGFtIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiBvcGVuaW50cm86OmxhYl9yZXBvcnQNCi0tLQ0KDQpgYGB7ciBsb2FkLXBhY2thZ2VzLCBtZXNzYWdlPUZBTFNFLCBjcm9wID0gVFJVRX0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KIyBMb2FkIHRoZSBuZWNlc3NhcnkgbGlicmFyaWVzDQpsaWJyYXJ5KHJuYXR1cmFsZWFydGgpDQpsaWJyYXJ5KHJuYXR1cmFsZWFydGhkYXRhKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2d0aGVtZXMpDQpsaWJyYXJ5KHBsb3RseSkNCg0KYGBgDQoNCiMjIyBFeGVyY2lzZSAxDQoNCkluc2VydCBhbnkgdGV4dCBoZXJlLg0KDQpgYGB7ciBjb2RlLWNodW5rLWxhYmVsfQ0KIyBJbnNlcnQgY29kZSBmb3IgRXhlcmNpc2UgMSBoZXJlDQojfCBjcm9wID0gdHJ1ZQ0KDQojIEdldCB0aGUgd29ybGQgbWFwIGRhdGENCndvcmxkX21hcCA8LSBuZV9jb3VudHJpZXMoc2NhbGUgPSAibWVkaXVtIiwgcmV0dXJuY2xhc3MgPSAic2YiKSB8Pg0KICBmaWx0ZXIobmFtZSAhPSAiQW50YXJjdGljYSIpDQpyZW5ld2FibGVfZ3JvdyA8LSByZWFkLmNzdigiYW5udWFsLXBlcmNlbnRhZ2UtY2hhbmdlLXJlbmV3YWJsZXMuY3N2IikgfD4NCiAgZmlsdGVyKENvZGUgIT0gIk5BIikgDQoNCnJlbmV3YWJsZV9ncm93JFJlbmV3YWJsZXMuLi4uZ3Jvd3RoLiA8LSByb3VuZChyZW5ld2FibGVfZ3JvdyRSZW5ld2FibGVzLi4uLmdyb3d0aC4sMikNCg0KcmVuZXdhYmxlX3Bsb3QgPC0gZnVuY3Rpb24ocmVnaW9uLCB5ZWFyKSB7DQpyZW5ld2FibGVfZ3JvdzIyIDwtIHJlbmV3YWJsZV9ncm93IHw+DQogIGZpbHRlcihZZWFyID09IHllYXIpDQoNCnJlbmV3YWJsZV9ncm93X21hcDIyIDwtIGxlZnRfam9pbih3b3JsZF9tYXAscmVuZXdhYmxlX2dyb3cyMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoICJpc29fYTNfZWgiPSAiQ29kZSIpKSB8Pg0KcmVuYW1lKCAiZ3Jvd3RoIiA9ICJSZW5ld2FibGVzLi4uLmdyb3d0aC4iKQ0KDQppZiAocmVnaW9uID09ICJXb3JsZCIpIHsNCiAgDQp9IGVsc2UgaWYgKHJlZ2lvbiA9PSAiTm9ydGggQW1lcmljYSIgfCByZWdpb24gPT0gIkxhdGluIEFtZXJpY2EgJiBDYXJpYmJlYW4iKSB7DQogIHJlbmV3YWJsZV9ncm93X21hcDIyIDwtIGZpbHRlcihyZW5ld2FibGVfZ3Jvd19tYXAyMiwgcmVnaW9uX3diID09IHJlZ2lvbikNCn0NCiAgZWxzZSB7cmVuZXdhYmxlX2dyb3dfbWFwMjIgPC0gZmlsdGVyKHJlbmV3YWJsZV9ncm93X21hcDIyLCByZWdpb25fdW4gPT0gcmVnaW9uICl9DQoNCnJlbmV3YWJsZV9ncm93X21hcDIyIHw+DQogIG11dGF0ZSh0ZXh0ID0gcGFzdGUoIjxiPiIsYWRtaW4sIjxiPlxuIGdyb3d0aCByYXRlOiIsc2lnbmlmKGdyb3d0aCwyKSkpDQoNCiBwIDwtIGdncGxvdChkYXRhID0gcmVuZXdhYmxlX2dyb3dfbWFwMjIpICsNCiBnZW9tX3NmKCBhZXMoIGZpbGwgPSBncm93dGggKyBydW5pZihucm93KHJlbmV3YWJsZV9ncm93X21hcDIyKSxtaW4gPSAwLCBtYXggPSAwLjAwMSksIHRleHQgPSBwYXN0ZSgiPGI+IixhZG1pbiwiPGI+XG4gZ3Jvd3RoIHJhdGU6IixzaWduaWYoZ3Jvd3RoLDIpKSksIGNvbG9yID0gImJsYWNrIikrDQogICNzY2FsZV9maWxsX21hbnVhbCgiIiwgdmFsdWVzID0gbXlfY29sb3JzKSsNCiBsYWJzKA0KICAgdGl0bGUgPSBwYXN0ZSgiQW5udWFsIHBlcmNlbnRhZ2UgY2hhbmdlIGluIHJlbmV3YWJsZSBlbmVyZ3kgZ2VuZXJhdGlvbiBpbiIsIHllYXIpLA0KICAgZmlsbCA9ICJHcm93dGggJSIpICsNCiAgc2NhbGVfZmlsbF9jb250aW51b3VzKGxvdyA9ICJyZWQiLCBoaWdoID0gImJsdWUiLCBsaW1pdHMgPSBjKC0yMCwgMjApLCBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGRpcmVjdGlvbiA9ICJob3Jpem9udGFsIiwgdGlja3MgPSBUUlVFLCBuYmluID0gNTAsIGJhcndpZHRoID0gMTAsIGJhcmhlaWdodCA9IDEsIGxhYmVsLnBvc2l0aW9uID0gImJvdHRvbSIsIHRpdGxlLnBvc2l0aW9uID0gInRvcCIsIHRpdGxlLmhqdXN0ID0gMC41KSkgKw0KIHRoZW1lX21hcCgpIA0KI3NjYWxlX2ZpbGxfY29udGludW91cyhsb3cgPSAicmVkIiwgbWlkID0gIndoaXRlIiwgaGlnaCA9ICJibHVlIiwgbGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KQ0KDQogZ2dwbG90bHkocCwgdG9vbHRpcCA9ICJ0ZXh0IikgfD4NCiAgIHN0eWxlKGhvdmVyb24gPSAiZmlsbHMiKQ0KDQp9DQoNCnJlbmV3YWJsZV9wbG90KCJXb3JsZCIsIDIwMjIpDQoNCg0KYGBgDQoNCg0KDQojIyMgRXhlcmNpc2UgMg0KYGBge3J9DQplbmVyZ3lfZ2VuIDwtIHJlYWQuY3N2KCJtb2Rlcm4tcmVuZXdhYmxlLXByb2QuY3N2IikgDQoNCmVnZW5fcGxvdCA8LSBmdW5jdGlvbihyZWdpb24pIHsNCiAgZW5lcmd5X2dlbl9zcGVjX2xpbmUgPC0gZW5lcmd5X2dlbiB8Pg0KICAgIGZpbHRlcihFbnRpdHkgPT0gcmVnaW9uKSB8Pg0KICAgIHJlbmFtZSggIldpbmQiPSJFbGVjdHJpY2l0eS5mcm9tLndpbmQuLi5UV2giICwiSHlkcm8iID0gIkVsZWN0cmljaXR5LmZyb20uaHlkcm8uLi5UV2giLCAiU29sYXIiID0gIkVsZWN0cmljaXR5LmZyb20uc29sYXIuLi5UV2giLCJPdGhlciIgID0gIk90aGVyLnJlbmV3YWJsZXMuaW5jbHVkaW5nLmJpb2VuZXJneS4uLlRXaCIpDQogIGVuZXJneV9nZW5fc3BlY19wb2ludCA8LSBlbmVyZ3lfZ2VuX3NwZWNfbGluZSB8Pg0KICAgIHBpdm90X2xvbmdlcihjb2xzID0gLWMoRW50aXR5LCBDb2RlLCBZZWFyKSwgbmFtZXNfdG8gPSAic291cmNlcyIsDQogICAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJFbmVyZ3kiICkNCiAgDQogIHAgPC0gZ2dwbG90KCkgICsNCiAgICBnZW9tX2xpbmUoZGF0YSA9IGVuZXJneV9nZW5fc3BlY19saW5lLGFlcyh4ID0gWWVhciwgeSA9IFdpbmQpLCBjb2xvciA9ICJwdXJwbGUiKSArIA0KICAgIGdlb21fbGluZShkYXRhID0gZW5lcmd5X2dlbl9zcGVjX2xpbmUsYWVzKHggPSBZZWFyLCB5ID0gSHlkcm8pLCBjb2xvciA9ICJwaW5rIikgKw0KICAgIGdlb21fbGluZShkYXRhID0gZW5lcmd5X2dlbl9zcGVjX2xpbmUsYWVzKHggPSBZZWFyLCB5ID0gU29sYXIpLCBjb2xvciA9ICJncmVlbiIpICsNCiAgICBnZW9tX2xpbmUoZGF0YSA9IGVuZXJneV9nZW5fc3BlY19saW5lLGFlcyh4ID0gWWVhciwgeSA9IE90aGVyKSwgY29sb3IgPSAib3JhbmdlIikgKw0KICAgIGdlb21fcG9pbnQoZGF0YSA9IGVuZXJneV9nZW5fc3BlY19wb2ludCwgYWVzKHggPSBZZWFyLCB5ID0gRW5lcmd5LCBjb2xvciA9IHNvdXJjZXMpLCBzaXplID0gMikNCiAgDQogIGdncGxvdGx5KHAsIHRvb2x0aXAgPSBjKCJFbmVyZ3kiLCJZZWFyIikpDQogICAgDQogIA0KfQ0KDQplZ2VuX3Bsb3QoIk5vcnRoIEFtZXJpY2EiKQ0KDQpgYGANCg0KDQoNCi4uLg0KDQo=